class Stack {
  constructor() {
    this.items = []; // 用数组存储栈元素（私有属性，模拟栈的内部存储）
  }

  // 入栈：添加元素到栈顶
  push(element) {
    this.items.push(element);
  }

  // 出栈：移除栈顶元素并返回其值（栈为空时返回 undefined）
  pop() {
    if (this.isEmpty()) {
      console.warn("栈为空，无法弹出元素");
      return undefined;
    }
    return this.items.pop();
  }

  // 查看栈顶元素（不修改栈）
  peek() {
    if (this.isEmpty()) {
      console.warn("栈为空，无栈顶元素");
      return undefined;
    }
    return this.items[this.items.length - 1];
  }

  // 判断栈是否为空
  isEmpty() {
    return this.items.length === 0;
  }

  // 获取栈的大小（元素个数）
  size() {
    return this.items.length;
  }

  // 清空栈
  clear() {
    this.items = [];
  }

  // 转换为字符串（方便打印查看）
  toString() {
    return this.items.toString();
  }
}



// 测试
// 创建栈实例
const stack = new Stack();

// 入栈操作
stack.push(10);
stack.push(20);
stack.push(30);
console.log("当前栈内容:", stack.toString()); // 输出: 10,20,30

// 查看栈顶
console.log("栈顶元素:", stack.peek()); // 输出: 30

// 出栈操作
console.log("弹出元素:", stack.pop()); // 输出: 30
console.log("弹出后栈内容:", stack.toString()); // 输出: 10,20

// 获取栈大小
console.log("栈大小:", stack.size()); // 输出: 2

// 判断栈是否为空
console.log("栈是否为空:", stack.isEmpty()); // 输出: false

// 清空栈
stack.clear();
console.log("清空后栈是否为空:", stack.isEmpty()); // 输出: true